#include "GameWindow.h"
#include <QVBoxLayout>
#include <QHBoxLayout>

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QStackedWidget>
#include <QLabel>
#include "GamePage.h"


GameWindow::GameWindow(QWidget *parent)
    : QWidget(parent),
    startButton(new QPushButton("开始游戏", this)),
    aboutButton(new QPushButton("关于", this)),
    helpButton(new QPushButton("规则介绍", this)),
    newGameButton(new QPushButton("新游戏", this)),
    exitButton(new QPushButton("退出游戏", this)), gamePage(new GamePage(this)),
    stackedWidget(new QStackedWidget(this)) {
    gamePage->hide();  // 初始时不显示游戏界面

    // 设置按钮大小
    startButton->setFixedSize(200, 50);
    aboutButton->setFixedSize(200, 50);
    helpButton->setFixedSize(200, 50);
    newGameButton->setFixedSize(200, 50);
    exitButton->setFixedSize(200, 50);

    // 主布局
    QVBoxLayout *mainLayout = new QVBoxLayout(this);
    mainLayout->setSpacing(10);  // 设置按钮之间的间距为10
    mainLayout->setAlignment(Qt::AlignCenter);   // 按钮居中
    // 主页面三个按钮
    mainLayout->addWidget(startButton);
    mainLayout->addWidget(helpButton);
    mainLayout->addWidget(aboutButton);


    // 新游戏和退出按钮的布局
    QVBoxLayout *newButtonLayout = new QVBoxLayout();
    newButtonLayout->addWidget(newGameButton);
    newButtonLayout->addWidget(exitButton);
    newButtonLayout->setAlignment(Qt::AlignCenter);

    // 添加新游戏按钮布局
    mainLayout->addLayout(newButtonLayout);

    // 初始化时隐藏新按钮
    newGameButton->setVisible(false);
    exitButton->setVisible(false);

    // 使用 QStackedWidget 来切换界面
    QStackedWidget *stackedWidget = new QStackedWidget(this);

    // 创建游戏界面按钮
    QWidget *GamePage = new QWidget;
    QLabel *gameLabel = new QLabel("游戏界面", GamePage);
    gameLabel->setAlignment(Qt::AlignCenter);

    // 将游戏界面和主界面添加到 stackedWidget
    stackedWidget->addWidget(this);  // 主菜单界面
    stackedWidget->addWidget(gamePage);  // 游戏界面
    // 将 stackedWidget 添加到主布局中
    mainLayout->addWidget(stackedWidget);

    // 设置窗口大小
    setFixedSize(800, 600);
    setWindowTitle("游戏初始界面");
    setLayout(mainLayout);
    mainLayout->addWidget(gamePage);
    // 按钮点击事件，切换界面
    connect(startButton, &QPushButton::clicked, this, &GameWindow::onStartGameClicked);
    connect(newGameButton, &QPushButton::clicked, this, &GameWindow::onNewGameClicked);
    connect(exitButton, &QPushButton::clicked, this, &QWidget::close);

}
GameWindow::~GameWindow() {}

void GameWindow::onStartGameClicked() {
    startButton->setVisible(false);
    helpButton->setVisible(false);
    aboutButton->setVisible(false);
    newGameButton->setVisible(true);
    exitButton->setVisible(true);
}
void GameWindow::onNewGameClicked() {
    // 切换到游戏界面
    stackedWidget->setCurrentWidget(gamePage);  // 显示游戏界面
    gamePage->startGame();  // 假设 GamePage 有 startGame 方法来启动游戏
}

void GameWindow::onExitGameClicked() {
    QApplication::quit();  // 退出游戏
}
